/***************************************************************************
 创建者: 华磊
 开始时间: 2017.6.13
 copyright: (C) 同川科技
 修改说明: (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 (1) 华磊　2017.6.13
 ***************************************************************************
 *  @file DataAnalysizer.h
 *  功能: vector数据的统计分析。可以求速度，加速度
 *
 *                                                                         *
 ***************************************************************************/
#ifndef DATAANALYSIZER_DOUBLE_H
#define DATAANALYSIZER_DOUBLE_H
#include <qvector.h>
#include "qstring.h"
#include <qqueue.h>
#include <queue>

class DataAnalysizerDouble
{
public:
    DataAnalysizerDouble(QString _dataComent, int _isPrint, int _printInverval
                   , int _dataRow, int  _dataNumberMax, int _dataOverFlowMethod);
    int recordDataForAnalysize(std::vector<double> _dataForAnalysizer);
    int resetDataForAnalysize();
    int writeDataQueueToFile(QString newFileName);
    std::vector<double> getDataMax();
    std::vector<double> getDataMin();
    std::vector<double> getDataAverage();
    std::vector<double> getDataMaxAbs();
    std::vector<double> getDataMinAbs();
    std::vector<double> getDataAverageAbs();
    std::vector<double> getDataIncrement();
    std::vector<double> getDataIncrementIncrement();
    std::queue< std::vector<double> > getDataQueue();


private:
    std::vector<double> dataForAnalysizer;
    std::vector<double> dataForAnalysizerOld;
    std::vector<double> dataMax;
    std::vector<double> dataMin;
    std::vector<double> dataAverage;
    std::vector<double> dataMaxAbs;
    std::vector<double> dataMinAbs;
    std::vector<double> dataAverageAbs;
    std::vector<double> dataIncrement;
    std::vector<double> dataIncrementOld;
    std::vector<double> dataIncrementIncrement;
    std::queue< std::vector<double> > dataQueue;//data缓存
    std:: queue< std::vector<double> > dataIncrementQueue;//dataIncrement缓存
    std::queue< std::vector<double> > dataIncrementIncrementQueue;//dataIncrementIncrement缓存
    int  dataRow;//１Vector　几个数据
    int  dataNumberMax;//list最多容纳数据条数
    int  currentDataNumber;//当前数据条数
    int isPrint; //是否打印
    int printInterval; //调用记录多少次打印一次
    int tmpRecordDataNumber;//打印间隔控制变量
    QString dataComment;//数据描述
    int dataOverFlowMethod;//数据个数溢出方法。０　数据个数溢出后停止计数和计算。１reset后重新开始。2  不加入datalist,及统计average平均数据。



};

#endif // DATAANALYSIZER_DOUBLE_H
